package com.settlement.system.model.entity.common;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 蘑菇街小程序-账单明细
 * @author Ximi
 * @since 2020-06-16
 */
@Data
@ExcelIgnoreUnannotated
@HeadStyle(fillBackgroundColor = 9,fillForegroundColor = 9)
@HeadRowHeight(value = 20)
@HeadFontStyle(fontHeightInPoints = 14)
public class TblMgjXcxBillDetail extends BaseModel implements Serializable {


    /**
     * 店铺编码
     */
    @ExcelProperty(value = "店铺编码")
    @ApiModelProperty(value = "店铺编码",required = true)
    @NotNull(message = "店铺编码不能为空")
    private String shopNo;

    /**
     * 店铺名称
     */
    @ExcelProperty(value = "店铺名称")
    @ApiModelProperty(value = "店铺名称")
    private String shopName;

    /**
     * 交易时间
     */
    @ExcelProperty(value = "交易时间")
    @ApiModelProperty(value = "交易时间",required = true)
    @JsonFormat(pattern="yyyy/MM/dd HH:mm:ss",timezone = "GMT+8")
    @NotNull(message = "交易时间不能为空")
    private Date exchangeDate;

    /**
     * 公众账号ID
     */
    @ExcelProperty(value = "公众账号ID")
    @ApiModelProperty(value = "公众账号ID")
    private String publicAccountId;

    /**
     * 商户号
     */
    @ExcelProperty(value = "商户号")
    @ApiModelProperty(value = "商户号",required = true)
    @NotNull(message = "交易时间不能为空")
    private String merchantAccount;

    /**
     * 特约商户号
     */
    @ExcelProperty(value = "特约商户号")
    @ApiModelProperty(value = "特约商户号")
    private String specialMerchantAccount;

    /**
     * 设备号
     */
    @ExcelProperty(value = "设备号")
    @ApiModelProperty(value = "设备号")
    private String deviceNo;

    /**
     * 微信订单号
     */
    @ExcelProperty(value = "微信订单号")
    @ApiModelProperty(value = "微信订单号",required = true)
    @NotNull(message = "微信订单号不能为空")
    private String wcOrderNo;

    /**
     * 商户订单号
     */
    @ExcelProperty(value = "商户订单号")
    @ApiModelProperty(value = "商户订单号",required = true)
    @NotNull(message = "微信订单号不能为空")
    private String merchantOrderNo;

    /**
     * 用户标识
     */
    @ExcelProperty(value = "用户标识")
    @ApiModelProperty(value = "用户标识")
    private String userMark;

    /**
     * 交易类型
     */
    @ExcelProperty(value = "交易类型")
    @ApiModelProperty(value = "交易类型")
    private String exchangeType;

    /**
     * 交易状态
     */
    @ExcelProperty(value = "交易状态")
    @ApiModelProperty(value = "交易状态")
    private String exchangeStatus;

    /**
     * 付款银行
     */
    @ExcelProperty(value = "付款银行")
    @ApiModelProperty(value = "付款银行")
    private String paymentBank;

    /**
     * 货币种类
     */
    @ExcelProperty(value = "货币种类")
    @ApiModelProperty(value = "货币种类")
    private String coinType;

    /**
     * 应结订单金额
     */
    @ExcelProperty(value = "应结订单金额")
    @ApiModelProperty(value = "应结订单金额",required = true)
    @NotNull(message = "应结订单金额不能为空")
    private BigDecimal settleOrderAmount;

    /**
     * 代金券金额
     */
    @ExcelProperty(value = "代金券金额")
    @ApiModelProperty(value = "代金券金额")
    private BigDecimal cashCouponAmont;

    /**
     * 微信退款单号
     */
    @ExcelProperty(value = "微信退款单号")
    @ApiModelProperty(value = "微信退款单号")
    private String wcRefundNo;

    /**
     * 商户退款单号
     */
    @ExcelProperty(value = "商户退款单号")
    @ApiModelProperty(value = "商户退款单号")
    private String merchantRefundNo;

    /**
     * 退款金额
     */
    @ExcelProperty(value = "退款金额")
    @ApiModelProperty(value = "退款金额")
    @NotNull(message = "退款金额不能为空")
    private BigDecimal refundAmount;

    /**
     * 充值券退款金额
     */
    @ExcelProperty(value = "充值券退款金额")
    @ApiModelProperty(value = "充值券退款金额")
    private BigDecimal rechargeCouponRefundAmount;

    /**
     * 退款类型
     */
    @ExcelProperty(value = "退款类型")
    @ApiModelProperty(value = "退款类型")
    private String refundType;

    /**
     * 退款状态
     */
    @ExcelProperty(value = "退款状态")
    @ApiModelProperty(value = "退款状态")
    private String refundStatus;

    /**
     * 商品名称
     */
    @ExcelProperty(value = "商品名称")
    @ApiModelProperty(value = "商品名称")
    private String itemName;

    /**
     * 商户数据包
     */
    @ExcelProperty(value = "商户数据包")
    @ApiModelProperty(value = "商户数据包")
    private String merchantDataPackage;

    /**
     * 手续费
     */
    @ExcelProperty(value = "手续费")
    @ApiModelProperty(value = "手续费",required = true)
    @NotNull(message = "手续费不能为空")
    private BigDecimal serviceCharge;

    /**
     * 费率
     */
    @ExcelProperty(value = "费率")
    @ApiModelProperty(value = "费率")
    private BigDecimal taxRate;

    /**
     * 订单金额
     */
    @ExcelProperty(value = "订单金额")
    @ApiModelProperty(value = "订单金额")
    private BigDecimal orderAmount;

    /**
     * 申请退款金额
     */
    @ExcelProperty(value = "申请退款金额")
    @ApiModelProperty(value = "申请退款金额")
    private BigDecimal applyRefundAmount;

    /**
     * 费率备注
     */
    @ExcelProperty(value = "费率备注")
    @ApiModelProperty(value = "费率备注")
    private String taxRateRemark;

}
